home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / emulatoren / st / st.s < prev    next >
Text File  |  1994-09-21  |  2KB  |  101 lines

  1. ; © Stefan Haubenthal 1992-94
  2.  
  3. *    include    prog:asm/include/wb.i
  4. *    incdir    prog:asm/include
  5. *    include    easystart.i
  6.  
  7. version=    "2.02"
  8. allocabs=    -$0cc
  9. freemem=    -$0d2
  10. oldopenlibrary=    -$198
  11. closelibrary=    -$19e
  12. open=        -$01e
  13. read=        -$02a
  14. copymemquick=    -$276
  15. mode_oldfile=    1005
  16.  
  17. rom=        $40000
  18. romsize=    $30000
  19. emu=        $70000
  20.  
  21.     move.l    4.w,a6
  22.     move.l    #romsize,d0
  23.     lea    rom,a1
  24.     jsr    allocabs(a6)
  25.     tst.l    d0
  26.     beq    exit
  27.     move.l    #emusize,d0
  28.     lea    emu,a1
  29.     jsr    allocabs(a6)
  30.     tst.l    d0
  31.     beq    exit
  32.     lea    dosname(pc),a1
  33.     jsr    oldopenlibrary(a6)
  34.     move.l    d0,a6
  35.     move.l    #romname,d1
  36.     move.l    #mode_oldfile,d2
  37.     jsr    open(a6)
  38.     beq.s    exit2
  39.     move.l    d0,d1
  40.     move.l    #rom,d2
  41.     move.l    #romsize,d3
  42.     jsr    read(a6)
  43.     bsr.s    patch
  44.     move.l    4.w,a6
  45.     lea    start_emu,a0
  46.     lea    emu,a1
  47.     move.l    #emusize,d0
  48.     jsr    copymemquick(a6)
  49.     lea    emu,a0
  50.     move.l    #$4e714e71,$a0(a0)
  51.     move.l    #$4e714e71,$b2(a0)
  52.     move.l    #$4e714e71,$b6(a0)
  53.     jmp    emu+4
  54. ; goodbye AmigaDOS!
  55. exit2    move.l    a6,a1
  56.     move.l    4.w,a6
  57.     jsr    closelibrary(a6)
  58.     move.l    #emusize,d0
  59.     lea    emu,a1
  60.     jsr    freemem(a6)
  61. exit    moveq    #20,d0
  62.     rts
  63.  
  64. patch    lea    reloc,a0
  65.     sub.l    a1,a1
  66. next_reloc    moveq    #0,d0
  67.     cmp    #0,(a0)
  68.     add    (a0)+,a1
  69.     bne.s    not_packed
  70.     move.b    (a0)+,d0
  71.     move.b    (a0)+,d1
  72. next_packed    add    d1,a1
  73. not_packed    sub.b    #($fc0000-rom)>>16,(a1,d2.l)
  74.     dbra    d0,next_packed
  75.     cmp.l    #diff,a0
  76.     blo.s    next_reloc
  77. next_diff    move.l    (a0)+,a1
  78.     move    (a0)+,d0
  79.     move.b    d0,(a1,d2.l)
  80.     cmp.l    #end_diff,a0
  81.     blo.s    next_diff
  82.     rts
  83.  
  84.     dc.b    "$VER: ST4Amiga V"
  85.     dc.l    version
  86.     dc.b    0
  87. dosname    dc.b    "dos.library",0
  88. romname    dc.b    "TOS.IMG",0
  89.  
  90.     data
  91. ; { delta_offset.w
  92. ; | 0.w number-1.b delta_offset.b }
  93. reloc    include    reloc.asm
  94. ; { offset.l data.w }
  95. diff    include    diff.asm
  96. end_diff
  97.  
  98.     code
  99. start_emu    include    emu.asm
  100. emusize=    *-start_emu
  101.